sexta-feira, 4 de janeiro de 2008

AutoHotkey: Itens do menu de contexto


Bem pessoal, como a continuação do tutoria sobre o Android deve demorar mais um pouco, para dar uma movimentada por aqui, resolvi postar um breve artigo sobre o fantástico AutoHotkey.

Para quem não conhece AutoHotkey é um utilitário open-source que permite, dentre outras coisas, fazer automação de tarefas repetitivas de mouse e teclado, criar teclas de atalho (dai o nome...) e o desenvolver interfaces gráficas simples. Neste artigo utilizaremos o AutoHotkey como uma linguagem de programação de propósito geral, fazendo proveito de sua velocidade e simplicidade. Não me aprofundarei na sintaxe das construções do AutoHotkey, muito menos tenho a pretenção de passar conceitos básicos informática geral, lógica de programação, etc... Presume-se que o leitor tenha intimidade com computadores e conhecimento básico de desenvolvimento de sistemas.

Objetivo

O objetivo do utilitário que desenvolveremos é facilitar a adição de "entradas" no menu de contexto. O menu de contexto é apresentado sempre que clicamos com o botão direito do mouse sobre um arquivo ou pasta, e como o próprio nome sugere, é sensível ao contexto, variando conforme o tipo de arquivo que está sendo clicado.



















"Fisiologia" do Programa

Tecnicamente o que o software vai fazer é adicionar uma chave ao Registro do Windows, mais precisamente em HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*, podemos verificar as entradas existentes atravez do "Editor de Registro", para acessa-lo basta seguir os seguintes passos:

INICIAR -> EXECUTAR -> [digite] regedit




A navegação no regedit é muito semelhante a do Windows Explorer, você "expande" as pastas (no caso do registro, chaves) e vai descendo na hierarquia.
















Com o intuito de manter a simplicidade, nosso programa de fato não vai ser sensível ao contexto. A chave, invariavelmente, será criada no contexto "*", ou seja, será válida para todos os tipos de arquivo.

Como relatei mais acima, passarei apenas "linhas gerais" do programa, vou me deter na "solução" em si, e não como chegar até ela, disponibilizarei o código, e como o mesmo está razoavelmente bem documentado, pode-se aprender um pouco mais com sua "leitura".

A alma do programa se resume a linha 27.

RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Classes\*\shell\%vDescricao%\command,, %vPrograma%

É nesta linha que informamos o caminho e os valores que devem ser adicionados. A "função" RegWrite possui os seguintes parâmetros:

RegWrite, [TIPO DE DADOS],[CHAVE PRINCIPAL],[NOME DO VALOR],[VALOR]

No caso do nosso software, criaremos um novo "valor de sequência" (REG_SZ), a partir da chave HKEY_LOCAL_MACHINE (ou seja, válido para todos os usuários), descendo a hierarquia de "chaves" SOFTWARE\Classes\*\shell, adicionaremos uma nova cujo o nome é a descrição informada pelo usuário, e uma sub-chave de nome command que contém um valor de sequência padrão cujo o conteúdo é o path do programa que deve ser executado.








Executando o Programa (Instruções de uso)


Ao executar o programa, sua tela principal é apresentada, devemos digitar no primeiro campo o caminho (path) do programa que deverá ser executado (ou busca-lo com o botão "...") seguido de "%1", isso é necessário para informar ao programa o nome do arquivo a ser editado. Para adicionar, por exemplo, o notepad a linha de comando teria o seguinte aspecto:

C:\WINDOWS\notepad.exe "%1"

As aspas também são necessárias para evitar problemas com arquivos que contém espaços em seus nomes (pois o SO pode interpretar as partes do nome do arquivo como vários parâmetros), herança dos velhos tempos do DOS.

O segundo campo é moleza, basta digitar uma descrição, esta é a que vai ser apresentada no menu de contexto, como por exemplo: Editar com o Notepad












É só clicar no botão Criar e pronto! Acabamos de adicionar uma opção para editar arquivos com o Notepad ao menu de contexto!

Coisas a Fazer

O programa ainda é muito cru, faltam opções para excluir as entradas adicionadas e escolher o contexto (tipo de arquivo), além de melhorias óbvias na interface. Fica a sugestão aos leitores, um bom exercício para os que estão aprendendo!

Conclusão

Bem, tudo o que este programinha faz, é possível fazer com as funcionalidades padrão do Windows, a minha intenção com este artigo, foi somente apresentar a ferramenta para aqueles que ainda não a conheciam e passar alguns truques de edição de registro, espero que todos tenham aproveitado algo, os conceitos aqui apresentados podem ser utilizados em programas mais úteis (a edição programática do registro é muito utilizada em scripts de logon, fica a sugestão). Prometo que vou me esforçar para postar com mais frequência (e com mais qualidade), abraços e até a próxima!

Link para o código fonte
Link para o executável compilado

Nenhum comentário:

Postar um comentário